17 - Grundlagen der Informatik [ID:1576]
50 von 326 angezeigt

Also zurück zu dem Thema, wo wir gestern aufgehört haben. Wir haben uns gestern

beschäftigt mit verketteten Listen und können die verketteten Listen als ein

Spezialfall von Bäumen ansehen. Also ein Baum kann jetzt angesehen werden als eine

Verallgemeinerung von Listen. Warum? In der Liste hat jedes Element exakt einen

Nachfolger. Bei einem Baum hat jedes Element mehrere Nachfolger. Wir nennen

diese Nachfolger, ich gehe jetzt einfach die Folien ziemlich ablesend durch, weil

die sind im Prinzip Begriffe, die man dann immer wieder gebraucht. Also ein

Nachfolger ist ein Child oder ein Kindknoten und analog zu Listen hat

eben jedes Element genau einen Vorgänger. Also der wird in der Regel als

Parentknoten oder Parent Note oder Elternknoten benannt.

Es gibt einen ausgezeichneten Knoten, der keinen Elternknoten hat. Das ist die

Wurzel des Baumes und alle Knoten, die keine Kinderknoten haben, das sind die

Blätter des Baumes oder Terminalknoten und Knoten mit Kinderknoten heißen auch

innere Knoten.

Und wir können jetzt jeden Knoten von diesem Baum auch also eine Ebene zuordnen

und diese Ebene, das ist die Länge des Pfades, wenn wir von der Wurzel ausgehen

bis wir zu diesem Knoten kommen. Die Höhe eines Baumes, das ist die maximale

Ebene, also die Höhe ist bestimmt durch den Knoten, der die maximale Länge eines

Pfades hat. Der Verzweigungsgrad eines Knotens ist die Anzahl der Kinderknoten

und ein sehr wichtiger Spezialfall ist die Situation, wo ein Baum, wo ein Knoten

maximal zwei Nachfolger hat, das sind die sogenannten Binärbäume. Wir können

diese Bäume visualisieren. Ich habe hier mal ein Beispiel. Was machen wir? Wir

verbinden die Eltern und die Kinderknoten. Hier ein Beispiel und aufpassen, ich habe

das absichtlich schlecht gemalt oder so gemalt, dass man sich durchs Auge

deuschen lassen kann und wie ich gestern schon gesagt habe, in der Informatik

wachsen die Bäume von oben nach unten. Also wir haben hier die Wurzel, das

ausgezeichnete Element. Die Wurzel hat keinen Vorgänger. Von der Wurzel aus, die

Wurzel ist der Elternknoten für die Knoten 2, 4 und 3. Für 5 und 6 ist 3 der

Elternknoten. Die Wurzel liegt auf der Ebene 0. Ich muss 0 Pfade gehen, um von der

Wurzel zur Wurzel zu kommen, ist klar. Und hier ein bisschen anders gezeichnet, das

Auge suggeriert, dass es da weiter unten ist, aber die Ebene 1, das sind die Knoten

genau 2, 3 und 4. Und 5 und 6 haben die Ebene 2, weil ich von der Wurzel aus 2,

einen Pfadelänge 2 zurücklegen muss, um hinzukommen. Und es ist natürlich kein

Binärbaum, ganz klar, denn einer der Knoten hat 3 Nachfolger, 3 Kinder. Soweit

klar? Gut. Bäume sind ganz extrem wichtig. Die werden immer wieder als

Landstruktur verwendet. Ein Beispiel, das wir dann auch sehen werden, das sind

Ableitungsbäume bezüglich einer Grammatik. Und zwar nicht nur bezüglich

einer Grammatik im linguistischen Sinn, sondern auch einer Grammatik für

Programmiersprachen. Also wenn unser Programm an einen Compiler übergeben

wird, dann ist ein Teil davon, das werden wir im nächsten Kapitel noch mal

anschauen, die Syntax-Analyse. Also die Frage, wie ist dieses Programm aufgebaut?

Diese Struktur-Analyse, die muss eindeutig sein. In einer natürlichen

Sprache ist dieses Syntax oft nicht eindeutig.

Es gibt ein paar so schöne Beispielsätze. Einer der bekanntesten in der

Linguistik ist der Satz, time flies like an arrow.

Jetzt können Sie sich mal überlegen, bis zum nächsten Dienstag, ist dieser Satz,

ist diese Sequenz von Wörtern eindeutig oder gibt es da unterschiedliche

Interpretationen? Und diese unterschiedlichen Interpretationen, die

kann ich dadurch visualisieren, dass ich diesen Syntax-Baum mehr aufbaue, wo ich

dann Satzteile wie Nominalfraße, Verbalfraße als Knoten andeute.

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

00:37:54 Min

Aufnahmedatum

2011-06-29

Hochgeladen am

2018-05-07 14:55:53

Sprache

de-DE

Einführung in UNIX/Linux Einführung in die Programmierung mit Java Grundlagen der Rechnerarchitektur Programmiersprachen: von der Maschinensprache zur Objektorientierung Objektorientierte Programmierung Datenstrukturen und Algorithmen: Suchen und Sortieren, Listen, Keller, Bäume Internet, Verteilte Systeme

Einbetten
Wordpress FAU Plugin
iFrame
Teilen